#include <QtCore/QCoreApplication>
#include "QtSql"
#include "iostream"
#include <QString>
#include <QSqlQuery>
#include <dbhelper.h>
#include <QMap>
#include <QVariant>
#include "bizqueryhelper.h"
#include "dateinteger.h"
#include "dbadapter.h"
#include "QSqlDatabase"
#include "QTextStream"
#include "QFile"
#include "errorlog.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    DBAdapter adapter("hax");
    adapter.InitDb();
    //adapter.GetUserAsset(0);
    QList<QVariantMap> ret = adapter.GetIncomeType();
    //adapter.GetIncomeType();
//    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
//    db.setDatabaseName("tbss");
//    db.open();

//    QStringList l = db.tables();
//    std::cout<<l.count()<<std::endl;
//    QSqlQuery query;

//    QFile file(":/pdm.sql");
//    if(file.open(QIODevice::ReadOnly|QIODevice::Text)){
//        QString script = file.readAll();
//        QStringList ql = script.split(";",QString::SkipEmptyParts);
//        std::cout<<ql.count()<<std::endl;
//        if(db.transaction())
//        {
//            bool commit = true;
//            foreach(QString q,ql)
//            {
//                if(!query.exec(q))
//                {
//                    commit = false;
//                    std::cout<<q.toStdString()<<std::endl;
//                    ErrorLog() << query.lastError().text();
//                    break;
//                }
//            }
//            if(commit)db.commit();
//            else {
//                db.rollback();
//            }
//        }
//        file.close();
//    }
    //dbhelper db;
    //db.GetConnection("hll");
    //db.InitDataBase();


    //dbhelper db;
    //bool d = db.GetConnection("hello");
    //std::cout<<d<<std::endl;
    //QMap<QString,QVariant> map;
    //map.insert("FNumber","user01");
    //map.insert("Fname","Chenyi");
    //int pk = db.Insert("T_BAS_USER",map);
    //std::cout<<pk;

    //QMap<QString,QVariant> umap;
    //umap.insert("Fname","jiahui");
    //QString filter = "Fid = 1";
    //db.Update("T_BAS_USER",umap,filter);

//    QMap<QString,QVariant> smap;
//    smap.insert("Fid",12);
//    QStringList columns;
//    columns.append("*");
//    QList<QVariantMap> r = db.SimpleSelect("T_BAS_USER",columns,smap,"");
//    foreach(QVariantMap i , r)
//    {
//        std::cout<<i.count()<<std::endl;
//        foreach(QString k , i.keys())
//        {
//            std::cout<<k.toStdString()+"="+i[k].toString().toStdString()<<std::endl;
//        }
//    }

//    for(int i=1;i<5;i++)
//    {
//        QMap<QString,QVariant> smap;
//        smap.insert("fnumber","sys1");
//        smap.insert("famount",i*2000);
//        smap.insert("fitypeid",3);
//        smap.insert("fyear",2012);
//        smap.insert("fmonth",i+7);
//        smap.insert("fuserid",110);
//        QDate d(2012,i,1);
//        DateInteger di(d);
//        std::cout<<di.ToString().toStdString()<<std::endl;
//        smap.insert("fdate",di.ToString());
//        int k = db.Insert("T_BAS_INCOME",smap);
//        std::cout << k << std::endl;
//    }
//    QList<QVariantMap> ret = bizQueryHelper::GetIncomeRptGroupByType(db,"");
//    DateInteger di(QDate(2012,6,10));
//    std::cout<<di.ToString().toStdString()<<std::endl;
//    QDate d(2012,6,1);
//    QList<QVariantMap> ret1 = bizQueryHelper::GetIncomeRpt(db,QDate(2012,2,1),d,110);

//    //std::cout<<ret.count()<<std::endl;
    foreach(QVariantMap i , ret)
        {
            std::cout<<i.count()<<std::endl;
            foreach(QString k , i.keys())
            {
                std::cout<<k.toStdString()+"="+i[k].toString().toStdString()<<std::ends;
            }
            std::cout<<std::endl;
        }

//    foreach(QVariantMap i , ret1)
//        {
//            std::cout<<i.count()<<std::endl;
//            foreach(QString k , i.keys())
//            {
//                std::cout<<k.toStdString()+"="+i[k].toString().toStdString()<<std::ends;
//            }
//            std::cout<<std::endl;
//        }
//    DBAdapter adapter;
//    QList<QVariantMap> ret = adapter.GetAllIncome(QDate(2012,2,1),QDate(2012,9,13),110);

//        foreach(QVariantMap i , ret)
//            {
//                std::cout<<i.count()<<std::endl;
//                foreach(QString k , i.keys())
//                {
//                    std::cout<<k.toStdString()+"="+i[k].toString().toStdString()<<std::ends;
//                }
//                std::cout<<std::endl;
//            }

    return 1;
}
